iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
1
Software Development

在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映系列 第 23

✾後花園D23✾-種花囉! Part 3( 會員系統 CRUD 之 Route 及 Middleware 設定 )

  • 分享至 

  • xImage
  •  

本系列文的環境狀態,可點擊此連結後花園環境參考

[ 種花囉! ]章節的會員系統 CRUD 將會是用 Api 放 POSTMAN 測試,所以不會用美美的前端教學,在此先給大家打個預防針。

今天就先建設下我們要前往的路徑吧!
另外也會使用 Middleware 設置身份驗證通道,避免一朵花可以去玷污很多花( 使用者僅能更動自身資料,無他人資料更動權限 )。

Routes 設定

檔案路徑位置:routes/api.php

<?php

use Illuminate\Http\Request;

// 註冊用
Route::post('/flower','FlowerController@store');

// 登入用
Route::post('/flower/login','FlowerLoginController@FlowerLogin');


//  預設 Flower 的 Middleware 驗證(透過 token ),讀取、修改、刪除、登出
//  有兩種方式,擇一使用,建議使用 方式一。

// 方式一:驗證群組化

Route::group(['middleware' => ['auth:api']], function(){
   Route::get('/flower', 'FlowerController@show');
   Route::put('/flower', 'FlowerController@update');
   Route::delete('/flower/{api_token}', 'FlowerController@destroy');
   Route::get('/flower','FlowerLogoutController@FlowerLogout');
});



// 方式二:驗證個別化
Route::get('/flower', 'FlowerController@show') ->middleware('auth:api');
Route::put('/flower', 'FlowerController@update') ->middleware('auth:api');
Route::delete('/flower/{api_token}', 'FlowerController@destory') ->middleware('auth:api');;
Route::get('/flower','FlowerLogoutController@FlowerLogout') ->middleware('auth:api');

Auth 設定

檔案路徑位置:config/auth.php

在 guards 及 providers 內,新增 flower 的驗證方式及套用 eloquent model 。

<?php

return [

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'flower' => [
            'driver' => 'token',        // 使用 token 當作入門票
            'provider' => 'flowers',   
            'hash' => false,
        ],
    ],



    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],


        'flowers' => [
            'driver' => 'eloquent',          // 參照 eloquent 建立的 model
            'model' => App\Flower::class,    // 對應 app/Flower.php 檔案內的 class 
        ],
    ],

];

Middleware 中介層簡介

過濾任何進入應用程式的 HTTP 請求,在進入路由前能先進行隔離保護,也可以進行請求或者回傳相關操作, Laravel 已內建些中介層( Middleware )的功能可以使用,如果沒有自己需求的功能,也能自行再撰寫出新的中介層來使用。

在路徑:app/Http/Kernel.php 內的中介層主要分兩種, 全域中介層 跟 路由中介層 ,此次使用的是路由中介層,只在被調用時使用,設定放置在 $routeMiddleware 屬性,另外 $middlewareGroups 屬性內有預設給 web 或 api 的路由群組中介層,利於一次作用多個中介層。

這篇就不放圖解析了,如果需要或疑問的話,可在底下留言,也歡迎前輩們留言提點。

想知道更多,請自行連結:
❁ Laravel官方-Middleware
❁ PHP Laravel 開發入門(四) – 路由(Routes)
❁ laravel 5.2 學習心得筆記 (完本)-middleware 中介層
❁ Laravel5.5 api token 用法
❁ 在LARAVEL APPS 內使用兩種AUTH進行登入驗證


上一篇
✾後花園D22✾-種花囉! Part 2( 會員系統 CRUD 之 Migration 設定 )
下一篇
✾後花園D24✾-種花囉! Part 4( 會員系統 CRUD 之 Controller 註冊、查詢、修改、刪除 - 程式碼 )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言